package 字符串练习;
/*      对称字符串
        需求： 键盘接受一个字符串，程序判断出该字符串是否是对称字符串，并在控制台打印是或不是
        对称字符串： 123321、111
        非对称字符串： 123123*/
//常用语字符创的逆序输出
import java.util.Scanner;

public class StringBuildtext1 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入偶数的一个字符串：");
        String s1 = sc.next();

        //第一步
        // 截取字符串
        //前半段
        String a1 = begenString(s1);
        System.out.println("前半段：" + a1);
        //后半段
        String a2 = endString(s1);
        System.out.println("后半段：" + a2);

        //第二步
        // 使用自定义方法，来反转截取的后半段字符串
        String a3 = reverseString(a2);
        System.out.println("后半段反转后：" + a3);

        //第三步
        //调用自定义的compareString方法来对比前半段和后半段是否相同
        System.out.println("该字符串是否是对称字符串：");
        compareString(a1, a3);

/*      //字符串反转（未封装为方法）
        //创建字符串容器
        //方法一：
        StringBuilder sb = new StringBuilder();
        StringBuilder a = sb.append(s1);//将从键盘输入的字符串添加到该容器中
        StringBuilder r = a.reverse();//将容器内的字符串反转
        String s2 = r.toString();//将该容器转变为String类型的字符串
        s1 = s2;//将反转后的字符串赋值给原字符串s1
        System.out.println(s2);

        //方法二：链式
        String s3 = new StringBuilder().append(s1).reverse().toString();
        System.out.println(s3);*/
    }

    //自定义方法：

    //1、字符串反转
    public static String reverseString(String s) {
        String s1 = new StringBuilder().append(s).reverse().toString();
        return s1;
    }

    //2、截取字符串

    //截取前半段
    public static String begenString(String s) {
        String a = "";
        int length = s.length();
        a = s.substring(0, s.length() / 2);
        return a;
    }

    //截取后半段字符串，但不反转
    public static String endString(String s) {
        String a = "";
        int length = s.length();
        a = s.substring(s.length() / 2);
        return a;
    }

    //3、对比前半段与反转后的后半段是否相等，使用equals，直接对比两者是否一样
    public static boolean compareString(String s1, String s2) {
        if (s1.equals(s2)) {
            System.out.println(s1 + "=" + s2 + ":该字符串是对称字符串");
            return true;
        }
        System.out.println(s1 + "!=" + s2 + ":该字符串不是对称字符串");
        return false;
    }
}
